package com.application.fabric.蓝桥杯;

public class 第三题 {
    public static void main(String[] args) {
        /**
         * 　对于一个日期，我们可以计算出年份的各个数位上的数字之和，也可以分别计算月和日的各位数字之和。
         * 请问从 1900 年 1 月 1 日至 9999 年 12 月 31 日，总共有多少天，年份的数位数字之和等于月的数位数字之和加日的数位数字之和。
         * 　　例如，2022年11月13日满足要求，因为 2+0+2+2=(1+1)+(1+3) 。
         * 　　请提交满足条件的日期的总数量。
         * */
        days();
        System.out.println(count);
    }
    static int count=0;
    private static void days(){
//        count = 0
//        for year in range(1900, 10000):
//        for month in range(1, 13):
//        # 计算当月的天数
//        if month in [1, 3, 5, 7, 8, 10, 12]:
//        days = 31
//        elif month in [4, 6, 9, 11]:
//        days = 30
//        elif year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
//        days = 29
//        else:
//        days = 28
//        for day in range(1, days+1):
//            # 计算数字之和
//                year_sum = digit_sum(year)
//        month_sum = digit_sum(month)
//        day_sum = digit_sum(day)
//            # 判断是否满足条件
//        if year_sum == month_sum + day_sum:
//        count += 1
//
//        print(count)
        int day=0;
        for (int year=1900;year<10000;year++){
            for (int mouth=1;mouth<13;mouth++){
                    switch (mouth){
                        case 1:;
                        case 3:;
                        case 5:;
                        case 7:;
                        case 8:;
                        case 10:;
                        case 12:
                            day=31;
                            break;
                        case 4:;
                        case 6:;
                        case 9:;
                        case 11:
                            day=30;
                            break;
                        case 2:
                            if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0){
                                day=29;
                            }else {
                                day=28;
                            }
                    }

                    Boolean flag = deal(year,mouth,day);
                    if (flag){
                        count++;
                    }
            }
        }

    }

    public static Boolean deal(int year,int mouth,int day){
        String str = Integer.toString(year);
        char[] chars1 = str.toCharArray();

        String str2 = Integer.toString(mouth)+Integer.toString(day);
        char[] chars2 = str2.toCharArray();

        int res1 =0;
        int res2 =0;
        for (int i=0;i<chars1.length;i++){
            res1+= chars1[i];
        }
        for (int i=0;i<chars2.length;i++){
            res2+=chars2[i];
        }

        if (res2 == res1){
            return  true;
        }else {
            return false;
        }
    }
}
